home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 06 - 1990 / 06.09 Sep 90 / LSObjectShell / GlobalStuff.p < prev    next >
Encoding:
Text File  |  1989-10-15  |  5.7 KB  |  296 lines  |  [TEXT/PJMM]

  1. UNIT GlobalStuff;
  2. {***********************************}
  3. INTERFACE
  4.  
  5.     USES
  6.         MemTypes, QuickDraw, OSIntf, ToolIntf, PackIntf, MacPrint, ObjIntf;
  7.  
  8.     CONST
  9. {Constants allowed to change}
  10.         kMasters = 12;            {# MoreMasters}
  11.         kMaxWindows = 0;        {# windows: 0 = unlimited}
  12.         kScreenMargin = 2;        {screen margin}
  13.         kTextMargin = 10;        {text margin}
  14.         kPrintMargin = 0.5;        { margin around printed page, in inch}
  15.         kHBarMargin = 40;        {left margin of horiz. scroll bar, usually 0}
  16.         kWOffset = 18;            {# pixels to offset windows}
  17.         kWindowKind = 8;        {windowkind,  # see Window constants}
  18.         kScrollDelay = 15;        {# ticks for initial scroll delay}
  19.         kMaxEditItems = 6;        {max # of editable text in dialogboxes}
  20.         kCreator = 'CSOS';        {Christian Stratowa Object Shell}
  21.  
  22. {Document constants}
  23.         kPictDoc = 'PICT';        {Type of first document in typelist}
  24.         kTextDoc = 'TEXT';        {Type of second document in typelist}
  25.         kDocKind = 'TEXT';        {Type of document in File menu}
  26.         kPictHeader = 512;        {#bytes for header}
  27.  
  28. {Window constants}
  29.         kNoGrow = 1;
  30.         kGrow = 2;
  31.         kHScroll = 3;
  32.         kVScroll = 4;
  33.         kScroll = 5;
  34.         kHScrollZoom = 6;
  35.         kVScrollZoom = 7;
  36.         kScrollZoom = 8;
  37.  
  38. {Scroll bar constants}
  39.         kHBar = 1;
  40.         kVBar = 2;
  41.         kSBarWidth = 15;
  42.  
  43. {ASCII constants}
  44.         kCR = 13;
  45.         kBS = 8;
  46.         kEnter = 3;
  47.  
  48. {Apple Menu}
  49.         kAppleID = 1;
  50.         kAbout = 1;
  51.  
  52. {File Menu}
  53.         kFileID = 2;
  54.         kNew = 1;
  55.         kOpen = 2;
  56.         kClose = 3;
  57.       {----}
  58.         kSave = 5;
  59.         kSaveAs = 6;
  60.       {----}
  61.         kPageSetUp = 8;
  62.         kPrint = 9;
  63.       {----}
  64.         kQuit = 11;
  65.  
  66. {Edit Menu}
  67.         kEditID = 3;
  68.         kUndo = 1;
  69.       {----}
  70.         kCut = 3;
  71.         kCopy = 4;
  72.         kPaste = 5;
  73.         kClear = 6;
  74.  
  75. {*begin MyMenus*}
  76. {New Menu}
  77.         kNewID = 21;
  78.  
  79. {New Picture Menu}
  80.         kNewPictID = 211;
  81.  
  82. {New Text Menu}
  83.         kNewTextID = 212;
  84.  
  85. {Graphics Menu}
  86.         kGraphID = 4;
  87.         kOvals = 1;
  88.         kSpirals = 2;
  89.  
  90. {Color Menu}
  91.         kColorID = 5;
  92.         kBlack = 1;
  93.         kWhite = 2;
  94.         kRed = 3;
  95.         kGreen = 4;
  96.         kBlue = 5;
  97.         kCyan = 6;
  98.         kMagenta = 7;
  99.         kYellow = 8;
  100.  
  101. {ForeColor Menu}
  102.         kForeCID = 51;
  103.  
  104. {BackColor Menu}
  105.         kBackCID = 52;
  106.  
  107. {Text Menu}
  108.         kTextID = 6;
  109.  
  110. {Font Menu}
  111.         kFontID = 61;
  112.  
  113. {Size Menu}
  114.         kSizeID = 62;
  115.  
  116. {Style Menu}
  117.         kStyleID = 63;
  118.         kPlain = 1;
  119.         kBold = 2;
  120.         kItalic = 3;
  121.         kUnderline = 4;
  122.         kOutline = 5;
  123.         kShadow = 6;
  124.         kCondense = 7;
  125.         kExtend = 8;
  126.  
  127. {Align Menu}
  128.         kJustID = 64;
  129.         kLeft = 1;
  130.         kCenter = 2;
  131.         kRight = 3;
  132.  
  133. {PopUp Menus}
  134.         kPopUpID1 = 10;
  135.         kFrameOval = 1;
  136.         kInvertOval = 2;
  137.         kFrameRect = 3;
  138.         kInvertRect = 4;
  139. {*end MyMenus*}
  140.  
  141. {Alert constants}
  142.         kAboutID = 1000;
  143.         kErrID = 1001;
  144.         kSizeErrID = 1002;
  145.         kSaveID = 1003;
  146.  
  147. {Dialog constants}
  148.         kPrintID = 2000;
  149.  
  150. {Str# constants}
  151.         kStrListID = 1000;
  152.         kOSErrID = 1001;
  153.  
  154. {low memory constants}
  155.         ROM85 = $28E;
  156.         MBarHeight = $BAA;
  157.  
  158.     VAR
  159. {Rectangle variables}
  160.         gDeskTopRect: Rect;
  161.         gDragRect: Rect;
  162.         gGrowRect: Rect;
  163.  
  164. {Window variables}
  165.         gMinWidth: Integer;
  166.         gMinHeight: Integer;
  167.         gWCount: Integer;
  168.         gCloseFlag: BOOLEAN;
  169.  
  170. {menu variables}
  171.         gMBarHeight: Integer;
  172.  
  173. {Cursor variables}
  174.         gWatch: Cursor;
  175.         gCross: Cursor;
  176.         gIBeam: Cursor;
  177.  
  178. {Print variables}
  179.         gPrintHdl: THPrint;
  180.  
  181. {Event variables}
  182.         gQuitting: BOOLEAN;
  183.         gDone: BOOLEAN;
  184.         gMFEvent: BOOLEAN;
  185.         gNextEvent: BOOLEAN;
  186.         gEvent: EventRecord;
  187.         gSleep: LongInt;
  188.         gMouseRgn: RgnHandle;
  189. {----------------------------------------}
  190.     PROCEDURE SetEnable (vRsrcID, vItem: Integer;
  191.                                     vFlag: BOOLEAN);
  192.     PROCEDURE CenterDialogBox (vWidth, vHeight: Integer;
  193.                                     VAR vPt: Point);
  194.     PROCEDURE CenterMyDialog (vType: OSType;
  195.                                     vResID: Integer);
  196.     FUNCTION IsAppWindow (vWPtr: WindowPtr): BOOLEAN;
  197.     FUNCTION OSError (vErr: OSErr): BOOLEAN;
  198.  
  199. {***********************************}
  200. IMPLEMENTATION
  201.  
  202.     PROCEDURE SetEnable (vRsrcID, vItem: Integer;
  203.                                     vFlag: BOOLEAN);
  204.     BEGIN
  205.         IF vFlag THEN
  206.             EnableItem(GetMHandle(vRsrcID), vItem)
  207.         ELSE
  208.             DisableItem(GetMHandle(vRsrcID), vItem)
  209.     END;    {SetEnable}
  210.  
  211. {========================================}
  212.     PROCEDURE CenterDialogBox (vWidth, vHeight: Integer;
  213.                                     VAR vPt: Point);
  214.     BEGIN
  215.         WITH screenBits.bounds DO
  216.             BEGIN
  217.                 vPt.h := (right - left - vWidth) DIV 2;
  218.                 vPt.v := (bottom - top - vHeight) DIV 3;
  219.             END;
  220.     END;    {CenterDialogBox}
  221.  
  222. {========================================}
  223.     PROCEDURE CenterMyDialog (vType: OSType;
  224.                                     vResID: Integer);
  225.         VAR
  226.             vHdl: Handle;
  227.             vRect: Rect;
  228.             vWidth, vHeight: Integer;
  229.             vPt: Point;
  230.  
  231.     BEGIN
  232.         vHdl := GetResource(vType, vResID);
  233.         HNoPurge(vHdl);
  234.         IF (vType = 'DLOG') THEN
  235.             vRect := DialogTHndl(vHdl)^^.boundsRect
  236.         ELSE IF (vType = 'ALRT') THEN
  237.             vRect := AlertTHndl(vHdl)^^.boundsRect;
  238.         WITH vRect DO
  239.             BEGIN
  240.                 vWidth := (right - left);
  241.                 vHeight := (bottom - top);
  242.                 CenterDialogBox(vWidth, vHeight, vPt);
  243.                 left := vPt.h;
  244.                 right := vPt.h + vWidth;
  245.                 top := vPt.v;
  246.                 bottom := vPt.v + vHeight;
  247.             END;
  248.         IF (vType = 'DLOG') THEN
  249.             DialogTHndl(vHdl)^^.boundsRect := vRect
  250.         ELSE IF (vType = 'ALRT') THEN
  251.             AlertTHndl(vHdl)^^.boundsRect := vRect;
  252.         SetResPurge(TRUE);
  253.         HPurge(vHdl);
  254.         InitCursor;
  255.     END;    {CenterMyDialog}
  256.  
  257. {========================================}
  258.     FUNCTION IsAppWindow (vWPtr: WindowPtr): BOOLEAN;
  259.     BEGIN
  260.         IF vWPtr = NIL THEN
  261.             IsAppWindow := FALSE
  262.         ELSE
  263.             WITH WindowPeek(vWPtr)^ DO
  264.                 IsAppWindow := (windowkind = userkind);
  265.     END;    {IsAppWindow}
  266.  
  267. {========================================}
  268.     FUNCTION OSError (vErr: OSErr): BOOLEAN;
  269.         VAR
  270.             vErrNr: Str255;
  271.             vErrMess: Str255;
  272.             vItem: Integer;
  273.  
  274.     BEGIN
  275.         OSError := (vErr <> noErr);
  276.         CASE vErr OF
  277.             DupFNErr: 
  278.                 GetIndString(vErrMess, kOSErrID, 1);
  279.             OpWrErr: 
  280.                 GetIndString(vErrMess, kOSErrID, 2);
  281.             IPrAbort: 
  282.                 Exit(OSError);
  283.             OTHERWISE
  284.                 vErrMess := '';
  285.         END;
  286.         NumToString(vErr, vErrNr);
  287.         ParamText(vErrNr, vErrMess, '', '');
  288.         IF vErr <> noErr THEN
  289.             BEGIN
  290.                 CenterMyDialog('ALRT', kErrID);
  291.                 IF StopAlert(kErrID, NIL) = OK THEN
  292.             END;
  293.     END;    {OSError}
  294.  
  295. END. {unit GlobalStuff}
  296. {***********************************}